<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // async function date() {
        //     console.log('代码开始执行');
        //     await setTimeout(() => {
        //         console.log('定时器内部代码执行了');
        //     }, 1000);
        //     console.log('等待计时器执行完');
        // }
        // date()
        // console.log('我是底部');

        //  await语句后所有的代码全部变成异步代码
        //     await只能等promise实例, 其他的一概不等

        // async function date() {
        //     console.log('代码开始执行');
        //     // await只能等promise实例
        //     await new Promise((resolve, reject) => {
        //         setTimeout(() => {
        //             console.log('定时器内部代码执行了');
        //             // 等promise内部的异步代码执行完，我们修改了promise的状态，await就能收到完成信息
        //             resolve()
        //             // reject()
        //         }, 1000)
        //     })
        //     console.log('等待计时器执行完');
        // }
        // date()
        // console.log('我是底部');

        // async function get() {
        //     console.log('a开始');
        //     await setTimeout(() => {
        //         console.log('a结束');
        //     }, 1000)
        //     console.log('计时器后的语句');
        // }
        // get()
        // console.log('end');

        // async function gen() {
        //     console.log('A开始');
        //     await new Promise((resolve, reject) => {
        //         setTimeout(() => {
        //             console.log('a结束');
        //             resolve()
        //         }, 1000)

        //     })
        //     console.log('定时器后的语句');
        // }
        // gen()
        // console.log('end');

        // async function hhh() {
        //     console.log('b开始');
        //     await setTimeout(() => {
        //         console.log('b结束');
        //     }, 1000)
        //     console.log('定时器后面的代码');
        // }
        // hhh()



        console.log('这是底部');
        async function hhh() {
            console.log('b开始');
            await new Promise((resolve, reject) => {
                setTimeout(() => {
                    console.log('b结束');
                    resolve()
                }, 1000)
            })
            console.log('定时器后面的代码');
        }
        hhh()
        console.log('这是底部');
    </script>

</body>

</html>